package com.shujia.scala

object Demo10Class {
  def main(args: Array[String]): Unit = {

    //创建类的对象，调用类的构造函数
    val student = new Student("001", "张三")
    //调用对象的方法
    student.print()

    val student1 = new Student("002", "李四", 24)

    println(student1)


  }
}

/**
  * 类：可以在类中定义方法，属性，构造函数，可以创建类的对象
  *
  * 在scala的类中有一默认的构造函数
  */
class Student(id: String, name: String) {
  println("默认构造函数")

  //定义属性, 定义及赋值
  var _id: String = id
  var _name: String = name

  //定义一个未赋值的变量，  下划线的作用是占位符
  var _age: Int = _

  /**
    * 重载构造函数
    * 在重载构造函数的第一行需要先调用默认的构造函数
    *
    */

  def this(id: String, name: String, age: Int) {
    //调用默认构造函数
    this(id, name)

    //给成员变量赋值
    this._age = age
  }


  //在类中定义普通的方法
  def print(): Unit = {
    println("student")
  }


  //重写父类的方法
  override def toString: String = {
    s"Student(" + _id + "\t" + _name + "\t" + _age + ")"
  }
}
